Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


Utilities.h HEAD (a42f8d32) Text, 54.65 KB

T8b949e// Copyright (C) 2024, Mark Qvist

T8b949e// This program is free software: you can redistribute it and/or modify
T8b949e// it under the terms of the GNU General Public License as published by
T8b949e// the Free Software Foundation, either version 3 of the License, or
T8b949e// (at your option) any later version.

T8b949e// This program is distributed in the hope that it will be useful,
T8b949e// but WITHOUT ANY WARRANTY; without even the implied warranty of
T8b949e// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
T8b949e// GNU General Public License for more details.

T8b949e// You should have received a copy of the GNU General Public License
T8b949e// along with this program. If not, see <https://www.gnu.org/licenses/>.

Tff7b72#Tff7b72include T8b949e"Radio.hpp"
Tff7b72#Tff7b72include T8b949e"Config.h"

T8b949e// Included for sorting
Tff7b72#Tff7b72include T8b949e<algorithm>
Tff7b72#Tff7b72include T8b949e<iterator>

Tff7b72#Tff7b72if HAS_EEPROM
Tff7b72#Tff7b72include T8b949e<EEPROM.h>
Tff7b72#Tff7b72elif PLATFORM == PLATFORM_NRF52
Tff7b72#Tff7b72include T8b949e<hal/nrf_rng.h>
Tff7b72#Tff7b72include T8b949e<Adafruit_LittleFS.h>
Tff7b72#Tff7b72include T8b949e<InternalFileSystem.h>
Te6edf3using Te6edf3namespace Te6edf3Adafruit_LittleFS_NamespaceTb4b4b4;
Tff7b72#Tff7b72define EEPROM_FILE "eeprom"
Tffa657bool Te6edf3file_exists Tff7b72= Tffa657falseTb4b4b4;
Tffa657int Te6edf3written_bytes Tff7b72= T79c0ff4Tb4b4b4;
Te6edf3File Td2a8fffileTb4b4b4(Te6edf3InternalFSTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72include T8b949e<stddef.h>

Tff7b72#Tff7b72include T8b949e"ROM.h"
Tff7b72#Tff7b72include T8b949e"Framing.h"
Tff7b72#Tff7b72include T8b949e"src/misc/MD5.h"

Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Td2a8ffeeprom_readTb4b4b4(Tffa657uint32_t Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_DISPLAY == true
Tff7b72#Tff7b72include T8b949e"Display.h"
Tff7b72#Tff7b72else
Tffa657void Td2a8ffdisplay_unblankTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tffa657bool Te6edf3display_blanked Tff7b72= Tffa657falseTb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_BLUETOOTH == true || HAS_BLE == true
Tffa657void Td2a8ffkiss_indicate_btpinTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72include T8b949e"Bluetooth.h"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_PMU == true
Tff7b72#Tff7b72include T8b949e"Power.h"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_INPUT == true
Tff7b72#Tff7b72include T8b949e"Input.h"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_GPS
Tff7b72#Tff7b72include T8b949e"src/misc/gps.h"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72include T8b949e"Device.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_HELTEC32_V3
T8b949e//https://github.com/espressif/esp-idf/issues/8855
Tff7b72#Tff7b72include T8b949e"hal/wdt_hal.h"
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_T3S3
Tff7b72#Tff7b72include T8b949e"hal/wdt_hal.h"
Tff7b72#Tff7b72else
Tff7b72#Tff7b72include T8b949e"hal/wdt_hal.h"
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72define ISR_VECT IRAM_ATTR
Tff7b72#Tff7b72else
Tff7b72#Tff7b72define ISR_VECT
Tff7b72#Tff7b72endif

Tffa657uint8_t Te6edf3boot_vector Tff7b72= T79c0ff0x00Tb4b4b4;

Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
T8b949e// TODO: Get ESP32 boot flags
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
T8b949e// TODO: Get NRF52 boot flags
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if MCU_VARIANT == MCU_NRF52
Tffa657unsigned Tffa657long Td2a8ffget_rng_seedTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3nrf_rng_error_correction_enableTb4b4b4(Te6edf3NRF_RNGTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_shorts_disableTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_SHORT_VALRDY_STOP_MASKTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_task_triggerTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_TASK_STARTTb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72!Te6edf3nrf_rng_event_checkTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3rb_a Tff7b72= Te6edf3nrf_rng_random_value_getTb4b4b4(Te6edf3NRF_RNGTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_event_clearTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72!Te6edf3nrf_rng_event_checkTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3rb_b Tff7b72= Te6edf3nrf_rng_random_value_getTb4b4b4(Te6edf3NRF_RNGTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_event_clearTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72!Te6edf3nrf_rng_event_checkTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3rb_c Tff7b72= Te6edf3nrf_rng_random_value_getTb4b4b4(Te6edf3NRF_RNGTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_event_clearTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72!Te6edf3nrf_rng_event_checkTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3rb_d Tff7b72= Te6edf3nrf_rng_random_value_getTb4b4b4(Te6edf3NRF_RNGTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_event_clearTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_EVENT_VALRDYTb4b4b4)Tb4b4b4;
Te6edf3nrf_rng_task_triggerTb4b4b4(Te6edf3NRF_RNGTb4b4b4, Te6edf3NRF_RNG_TASK_STOPTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3rb_a Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Te6edf3rb_b Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Te6edf3rb_c Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Te6edf3rb_dTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_NP == true
Tff7b72#Tff7b72include T8b949e<Adafruit_NeoPixel.h>
Tff7b72#Tff7b72define NUMPIXELS 1
Te6edf3Adafruit_NeoPixel Td2a8ffpixelsTb4b4b4(Te6edf3NUMPIXELSTb4b4b4, Te6edf3pin_npTb4b4b4, Te6edf3NEO_GRB Tff7b72+ Te6edf3NEO_KHZ800Tb4b4b4)Tb4b4b4;

Tffa657uint8_t Te6edf3npr Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3npg Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3npb Tff7b72= T79c0ff0Tb4b4b4;
Tffa657float Te6edf3npi Tff7b72= Te6edf3NP_MTb4b4b4;
Tffa657bool Te6edf3pixels_started Tff7b72= Tffa657falseTb4b4b4;

Tffa657void Td2a8ffled_set_intensityTb4b4b4(Tffa657uint8_t Te6edf3intensityTb4b4b4) Tb4b4b4{
Te6edf3npi Tff7b72= Tb4b4b4(Tffa657floatTb4b4b4)Te6edf3intensityTff7b72/T79c0ff255.0Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffled_initTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_HELTEC_T114
T8b949e// Enable vext power supply to neopixel
Te6edf3pinModeTb4b4b4(Te6edf3PIN_VEXT_ENTb4b4b4, Te6edf3OUTPUTTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3PIN_VEXT_ENTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PSETTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3int_val Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PINTTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3led_set_intensityTb4b4b4(Te6edf3int_valTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PSETTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3int_val Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PINTTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3led_set_intensityTb4b4b4(Te6edf3int_valTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Td2a8ffnpsetTb4b4b4(Tffa657uint8_t Te6edf3rTb4b4b4, Tffa657uint8_t Te6edf3gTb4b4b4, Tffa657uint8_t Te6edf3bTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3pixels_started Tff7b72!Tff7b72= Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3pixelsTb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3pixels_started Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3r Tff7b72!Tff7b72= Te6edf3npr Tff7b72|Tff7b72| Te6edf3g Tff7b72!Tff7b72= Te6edf3npg Tff7b72|Tff7b72| Te6edf3b Tff7b72!Tff7b72= Te6edf3npbTb4b4b4) Tb4b4b4{
Te6edf3npr Tff7b72= Te6edf3rTb4b4b4; Te6edf3npg Tff7b72= Te6edf3gTb4b4b4; Te6edf3npb Tff7b72= Te6edf3bTb4b4b4;
Te6edf3pixelsTb4b4b4.Te6edf3setPixelColorTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3pixelsTb4b4b4.Te6edf3ColorTb4b4b4(Te6edf3nprTff7b72*Te6edf3npiTb4b4b4, Te6edf3npgTff7b72*Te6edf3npiTb4b4b4, Te6edf3npbTff7b72*Te6edf3npiTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3pixelsTb4b4b4.Te6edf3showTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffboot_seqTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3rsTb4b4b4[Tb4b4b4] Tff7b72= Tb4b4b4{ T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00 Tb4b4b4}Tb4b4b4;
Tffa657uint8_t Te6edf3gsTb4b4b4[Tb4b4b4] Tff7b72= Tb4b4b4{ T79c0ff0x10Tb4b4b4, T79c0ff0x08Tb4b4b4, T79c0ff0x00 Tb4b4b4}Tb4b4b4;
Tffa657uint8_t Te6edf3bsTb4b4b4[Tb4b4b4] Tff7b72= Tb4b4b4{ T79c0ff0x00Tb4b4b4, T79c0ff0x08Tb4b4b4, T79c0ff0x10 Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff1Tff7b72*Tff7b72sizeofTb4b4b4(Te6edf3rsTb4b4b4)Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(Te6edf3rsTb4b4b4[Te6edf3iTff7b72%Tff7b72sizeofTb4b4b4(Te6edf3rsTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3gsTb4b4b4[Te6edf3iTff7b72%Tff7b72sizeofTb4b4b4(Te6edf3gsTb4b4b4)Tb4b4b4]Tb4b4b4, Te6edf3bsTb4b4b4[Te6edf3iTff7b72%Tff7b72sizeofTb4b4b4(Te6edf3bsTb4b4b4)Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff33Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff66Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffboot_seqTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0x90Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0x70Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_20
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_21
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_T3S3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_E22_ESP32
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TDECK
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM_S_V1
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V1_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V2
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_H_W_PAPER
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_1
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_XIAO_S3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HUZZAH32
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_XIAO_S3
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_GENERIC_ESP32
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0x90Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0x70Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_OPENCOM_XL
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC_T114
T8b949e// Heltec T114 pulls pins LOW to turn on
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TECHO
Tffa657void Td2a8ffled_rx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_rx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_ONTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_tx_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LED_OFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffled_id_onTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffled_id_offTb4b4b4(Tb4b4b4) Tb4b4b4{ Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif

Tffa657void Td2a8ffhard_resetTb4b4b4(Tffa657voidTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
Te6edf3ESPTb4b4b4.Te6edf3restartTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3NVIC_SystemResetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

T8b949e// LED Indication: Error
Tffa657void Td2a8ffled_indicate_errorTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_rxTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

T8b949e// LED Indication: Airtime Lock
Tffa657void Td2a8ffled_indicate_airtime_lockTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Te6edf3npsetTb4b4b4(T79c0ff32Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff2Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

T8b949e// LED Indication: Boot Error
Tffa657void Td2a8ffled_indicate_boot_errorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Tff7b72whileTb4b4b4(Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0xFFTb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tff7b72while Tb4b4b4(Tffa657trueTb4b4b4) Tb4b4b4{
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff5Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}

T8b949e// LED Indication: Warning
Tffa657void Td2a8ffled_indicate_warningTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_NP == true
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0xFFTb4b4b4, T79c0ff0x50Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Te6edf3digitalWriteTb4b4b4(Te6edf3pin_led_txTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

T8b949e// LED Indication: Info
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32 || MCU_VARIANT == MCU_NRF52
Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3npsetTb4b4b4(T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4,T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_1
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TECHO
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_indicate_infoTb4b4b4(Tffa657int Te6edf3cyclesTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3forever Tff7b72= Tb4b4b4(Te6edf3cycles Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Tffa657true Tff7b72: Tffa657falseTb4b4b4;
Te6edf3cycles Tff7b72= Te6edf3forever Tff7b72? T79c0ff1 Tff7b72: Te6edf3cyclesTb4b4b4;
Tff7b72whileTb4b4b4(Te6edf3cycles Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3foreverTb4b4b4) Te6edf3cyclesTff7b72-Tff7b72-Tb4b4b4;
Tb4b4b4}
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72endif


Tffa657unsigned Tffa657long Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32

Tff7b72#Tff7b72if HAS_NP == true
Tffa657int Te6edf3led_standby_lng Tff7b72= T79c0ff200Tb4b4b4;
Tffa657int Te6edf3led_standby_cut Tff7b72= T79c0ff100Tb4b4b4;
Tffa657int Te6edf3led_standby_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657int Te6edf3led_standby_max Tff7b72= T79c0ff375Tff7b72+Te6edf3led_standby_lngTb4b4b4;
Tffa657int Te6edf3led_notready_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657int Te6edf3led_notready_max Tff7b72= Te6edf3led_standby_maxTb4b4b4;
Tffa657int Te6edf3led_notready_value Tff7b72= Te6edf3led_notready_minTb4b4b4;
Tffa657int8_t Te6edf3led_notready_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff350Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_console_wait Tff7b72= T79c0ff1Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_wait Tff7b72= T79c0ff200Tb4b4b4;
Tff7b72#Tff7b72else
Tffa657uint8_t Te6edf3led_standby_min Tff7b72= T79c0ff200Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_value Tff7b72= Te6edf3led_notready_minTb4b4b4;
Tffa657int8_t Te6edf3led_notready_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff1768Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_wait Tff7b72= T79c0ff150Tb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657int Te6edf3led_standby_lng Tff7b72= T79c0ff200Tb4b4b4;
Tffa657int Te6edf3led_standby_cut Tff7b72= T79c0ff100Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_min Tff7b72= T79c0ff200Tb4b4b4;
Tffa657uint8_t Te6edf3led_standby_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_min Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_max Tff7b72= T79c0ff255Tb4b4b4;
Tffa657uint8_t Te6edf3led_notready_value Tff7b72= Te6edf3led_notready_minTb4b4b4;
Tffa657int8_t Te6edf3led_notready_direction Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_standby_wait Tff7b72= T79c0ff1768Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3led_notready_wait Tff7b72= T79c0ff150Tb4b4b4;
Tff7b72#Tff7b72endif

Tffa657unsigned Tffa657long Te6edf3led_standby_value Tff7b72= Te6edf3led_standby_minTb4b4b4;
Tffa657int8_t Te6edf3led_standby_direction Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_indicate_standbyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}

Tffa657uint8_t Te6edf3led_standby_intensityTb4b4b4;
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Tffa657int Te6edf3led_standby_ti Tff7b72= Te6edf3led_standby_value Tff7b72- Te6edf3led_standby_lngTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72> Te6edf3led_standby_cutTb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_cutTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_tiTb4b4b4;
Tb4b4b4}
Te6edf3npsetTb4b4b4(Te6edf3led_standby_intensityTff7b72/T79c0ff3Tb4b4b4, Te6edf3led_standby_intensityTff7b72/T79c0ff3Tb4b4b4, Te6edf3led_standby_intensityTff7b72/T79c0ff3Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffled_indicate_consoleTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3npsetTb4b4b4(T79c0ff0x60Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x60Tb4b4b4)Tb4b4b4;
T8b949e// led_standby_ticks++;

T8b949e// if (led_standby_ticks > led_console_wait) {
T8b949e// led_standby_ticks = 0;
T8b949e// if (led_standby_value <= led_standby_min) {
T8b949e// led_standby_direction = 1;
T8b949e// } else if (led_standby_value >= led_standby_max) {
T8b949e// led_standby_direction = -1;
T8b949e// }

T8b949e// uint8_t led_standby_intensity;
T8b949e// led_standby_value += led_standby_direction;
T8b949e// int led_standby_ti = led_standby_value - led_standby_lng;

T8b949e// if (led_standby_ti < 0) {
T8b949e// led_standby_intensity = 0;
T8b949e// } else if (led_standby_ti > led_standby_cut) {
T8b949e// led_standby_intensity = led_standby_cut;
T8b949e// } else {
T8b949e// led_standby_intensity = led_standby_ti;
T8b949e// }
T8b949e// npset(led_standby_intensity, 0x00, led_standby_intensity);
T8b949e// }
Tb4b4b4}

Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_indicate_standbyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_standby_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72> T79c0ff253Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_TECHO
Te6edf3led_rx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_TECHO
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_LORA32_V2_1
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72else
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffled_indicate_consoleTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_indicate_standbyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if HAS_NP == true
Tffa657void Td2a8ffled_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticksTff7b72+Tff7b72+Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3led_standby_ticks Tff7b72> Te6edf3led_notready_waitTb4b4b4) Tb4b4b4{
Te6edf3led_standby_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72<Tff7b72= Te6edf3led_standby_minTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_value Tff7b72>Tff7b72= Te6edf3led_standby_maxTb4b4b4) Tb4b4b4{
Te6edf3led_standby_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}

Tffa657uint8_t Te6edf3led_standby_intensityTb4b4b4;
Te6edf3led_standby_value Tff7b72+Tff7b72= Te6edf3led_standby_directionTb4b4b4;
Tffa657int Te6edf3led_standby_ti Tff7b72= Te6edf3led_standby_value Tff7b72- Te6edf3led_standby_lngTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_standby_ti Tff7b72> Te6edf3led_standby_cutTb4b4b4) Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_cutTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_standby_intensity Tff7b72= Te6edf3led_standby_tiTb4b4b4;
Tb4b4b4}

Te6edf3npsetTb4b4b4(Te6edf3led_standby_intensityTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72else
Tffa657void Td2a8ffled_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_notready_ticksTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_notready_ticks Tff7b72> Te6edf3led_notready_waitTb4b4b4) Tb4b4b4{
Te6edf3led_notready_ticks Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_notready_value Tff7b72<Tff7b72= Te6edf3led_notready_minTb4b4b4) Tb4b4b4{
Te6edf3led_notready_direction Tff7b72= T79c0ff1Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3led_notready_value Tff7b72>Tff7b72= Te6edf3led_notready_maxTb4b4b4) Tb4b4b4{
Te6edf3led_notready_direction Tff7b72= T79c0ff-1Tb4b4b4;
Tb4b4b4}
Te6edf3led_notready_value Tff7b72+Tff7b72= Te6edf3led_notready_directionTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3led_notready_value Tff7b72> T79c0ff128Tb4b4b4) Tb4b4b4{
Te6edf3led_tx_onTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_tx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_LORA32_V2_1
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72#Tff7b72if defined(EXTERNAL_LEDS)
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72else
Te6edf3led_rx_offTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72endif


Tffa657bool Td2a8ffinterface_bitrate_cmpTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3pTb4b4b4, Te6edf3RadioInterfaceTff7b72* Te6edf3qTb4b4b4) Tb4b4b4{
Tffa657long Te6edf3p_bitrate Tff7b72= Te6edf3pTff7b72-Tff7b72>Te6edf3getBitrateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657long Te6edf3q_bitrate Tff7b72= Te6edf3qTff7b72-Tff7b72>Te6edf3getBitrateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3p_bitrate Tff7b72> Te6edf3q_bitrateTb4b4b4;
Tb4b4b4}

T8b949e// Sort interfaces in descending order according to bitrate.
Tffa657void Td2a8ffsort_interfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3stdTff7b72:Tff7b72:Te6edf3sortTb4b4b4(Te6edf3stdTff7b72:Tff7b72:Te6edf3beginTb4b4b4(Te6edf3interface_obj_sortedTb4b4b4)Tb4b4b4, Te6edf3stdTff7b72:Tff7b72:Te6edf3endTb4b4b4(Te6edf3interface_obj_sortedTb4b4b4)Tb4b4b4, Te6edf3interface_bitrate_cmpTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffserial_writeTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_BLUETOOTH || HAS_BLE == true
Tff7b72if Tb4b4b4(Te6edf3bt_state Tff7b72!Tff7b72= Te6edf3BT_STATE_CONNECTEDTb4b4b4) Tb4b4b4{
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3SerialBTTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if MCU_VARIANT == MCU_NRF52 && HAS_BLE
T8b949e// This ensures that the TX buffer is flushed after a frame is queued in serial.
T8b949e// serial_in_frame is used to ensure that the flush only happens at the end of the frame
Tff7b72if Tb4b4b4(Te6edf3serial_in_frame Tff7b72&Tff7b72& Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3SerialBTTb4b4b4.Te6edf3flushTXDTb4b4b4(Tb4b4b4)Tb4b4b4; Te6edf3serial_in_frame Tff7b72= Tffa657falseTb4b4b4; Tb4b4b4}
Tff7b72else Tff7b72if Tb4b4b4(Tff7b72!Te6edf3serial_in_frame Tff7b72&Tff7b72& Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3serial_in_frame Tff7b72= Tffa657trueTb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3SerialTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Td2a8ffescaped_serial_writeTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3byte Tff7b72=Tff7b72= Te6edf3FENDTb4b4b4) Tb4b4b4{ Te6edf3serial_writeTb4b4b4(Te6edf3FESCTb4b4b4)Tb4b4b4; Te6edf3byte Tff7b72= Te6edf3TFENDTb4b4b4; Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3byte Tff7b72=Tff7b72= Te6edf3FESCTb4b4b4) Tb4b4b4{ Te6edf3serial_writeTb4b4b4(Te6edf3FESCTb4b4b4)Tb4b4b4; Te6edf3byte Tff7b72= Te6edf3TFESCTb4b4b4; Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_resetTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RESETTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RESET_BYTETb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_errorTb4b4b4(Tffa657uint8_t Te6edf3error_codeTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_ERRORTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3error_codeTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_radiostateTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RADIO_STATETb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getRadioOnlineTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_stat_rxTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// todo, implement
T8b949e//serial_write(FEND);
T8b949e//serial_write(CMD_STAT_RX);
T8b949e//escaped_serial_write(stat_rx>>24);
T8b949e//escaped_serial_write(stat_rx>>16);
T8b949e//escaped_serial_write(stat_rx>>8);
T8b949e//escaped_serial_write(stat_rx);
T8b949e//serial_write(FEND);
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_stat_txTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// todo, implement
T8b949e//serial_write(FEND);
T8b949e//serial_write(CMD_STAT_TX);
T8b949e//escaped_serial_write(stat_tx>>24);
T8b949e//escaped_serial_write(stat_tx>>16);
T8b949e//escaped_serial_write(stat_tx>>8);
T8b949e//escaped_serial_write(stat_tx);
T8b949e//serial_write(FEND);
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_stat_rssiTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3packet_rssi_val Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3last_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_RSSITb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3packet_rssi_valTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_stat_snrTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_SNRTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3last_snr_rawTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_radio_lockTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RADIO_LOCKTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getRadioLockTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_spreadingfactorTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SFTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getSpreadingFactorTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_codingrateTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_CRTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getCodingRate4Tb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_implicit_lengthTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_IMPLICITTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3implicit_lTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_txpowerTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tffa657int8_t Te6edf3txp Tff7b72= Te6edf3radioTff7b72-Tff7b72>Te6edf3getTxPowerTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_TXPOWERTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3txpTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_bandwidthTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3bw Tff7b72= Te6edf3radioTff7b72-Tff7b72>Te6edf3getSignalBandwidthTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_BANDWIDTHTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bwTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bwTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bwTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bwTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_frequencyTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3freq Tff7b72= Te6edf3radioTff7b72-Tff7b72>Te6edf3getFrequencyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FREQUENCYTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3freqTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3freqTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3freqTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3freqTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_interfaceTb4b4b4(Tffa657int Te6edf3indexTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_INTERFACESTb4b4b4)Tb4b4b4;
T8b949e// print the index to the interface and the interface type
Te6edf3serial_writeTb4b4b4(Te6edf3indexTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3interfacesTb4b4b4[Te6edf3indexTb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_st_alockTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tffa657uint16_t Te6edf3at Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getSTALockTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_ST_ALOCKTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_lt_alockTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tffa657uint16_t Te6edf3at Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getLTALockTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_LT_ALOCKTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_channel_statsTb4b4b4(Tffa657uint8_t Te6edf3indexTb4b4b4) Tb4b4b4{
Te6edf3RadioInterfaceTff7b72* Te6edf3radio Tff7b72= Te6edf3interface_objTb4b4b4[Te6edf3indexTb4b4b4]Tb4b4b4;
Tffa657int Te6edf3current_rssi Tff7b72= Te6edf3radioTff7b72-Tff7b72>Te6edf3currentRssiTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3ats Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getAirtimeTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3atl Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getLongtermAirtimeTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3cls Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getTotalChannelUtilTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3cll Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getLongtermChannelUtilTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff100Tff7b72*T79c0ff100Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3crs Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3current_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3nfl Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getNoiseFloorTb4b4b4(Tb4b4b4)Tff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3ntf Tff7b72= T79c0ff0xFFTb4b4b4; Tff7b72if Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getInterferenceTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3ntf Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3current_rssiTff7b72+Te6edf3rssi_offsetTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_CHTMTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atsTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atlTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3atlTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3clsTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3clsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cllTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cllTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3crsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3nflTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3ntfTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_phy_statsTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tffa657uint16_t Te6edf3lst Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getSymbolTimeTb4b4b4(Tb4b4b4)Tff7b72*T79c0ff1000Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3lsr Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getSymbolRateTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3prs Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getPreambleLengthTb4b4b4(Tb4b4b4)Tff7b72+T79c0ff4Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3prt Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getPreambleLengthTb4b4b4(Tb4b4b4)Tff7b72+T79c0ff4Tb4b4b4)Tff7b72*Te6edf3radioTff7b72-Tff7b72>Te6edf3getSymbolTimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3cst Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getCSMASlotMSTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3dft Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getDifsMSTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_PHYPRMTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lstTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lstTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lsrTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3lsrTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prsTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prsTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prtTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3prtTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cstTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3cstTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3dftTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4; Te6edf3escaped_serial_writeTb4b4b4(Te6edf3dftTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_csma_statsTb4b4b4(Tffa657uint8_t Te6edf3indexTb4b4b4) Tb4b4b4{
Te6edf3selected_radio Tff7b72= Te6edf3interface_objTb4b4b4[Te6edf3indexTb4b4b4]Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_SEL_INTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3indexTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_CSMATb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3selected_radioTff7b72-Tff7b72>Te6edf3getCWBandTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3selected_radioTff7b72-Tff7b72>Te6edf3getCWMinTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3selected_radioTff7b72-Tff7b72>Te6edf3getCWMaxTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_batteryTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_STAT_BATTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3battery_stateTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Tb4b4b4(Tffa657uint8_tTb4b4b4)Tffa657intTb4b4b4(Te6edf3battery_percentTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_btpinTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_BLUETOOTH || HAS_BLE == true
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_BT_PINTb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3bt_ssp_pinTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_randomTb4b4b4(Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_RANDOMTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_fbstateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FB_EXTTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72if Tb4b4b4(Te6edf3disp_ext_fbTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3serial_writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_device_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_DEV_HASHTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_target_fw_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_firmware_hash_targetTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_fw_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x02Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_firmware_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_bootloader_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_bootloader_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_partition_table_hashTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_HASHESTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x04Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3DEV_HASH_LENTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3dev_partition_table_hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_fbTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FB_READTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff512Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3fbTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3serial_writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_dispTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_DISP_READTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if HAS_DISPLAY
Tffa657uint8_t Tff7b72*Te6edf3da Tff7b72= Te6edf3disp_areaTb4b4b4.Te6edf3getBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Tff7b72*Te6edf3sa Tff7b72= Te6edf3stat_areaTb4b4b4.Te6edf3getBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff512Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3escaped_serial_writeTb4b4b4(Te6edf3daTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff512Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3escaped_serial_writeTb4b4b4(Te6edf3saTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3serial_writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_READYTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_not_readyTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_READYTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(T79c0ff0x00Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_promiscTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_PROMISCTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3promiscTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x01Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3serial_writeTb4b4b4(T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_detectTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_DETECTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3DETECT_RESPTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_versionTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_FW_VERSIONTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MAJ_VERSTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MIN_VERSTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_platformTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_PLATFORMTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3PLATFORMTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_boardTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_BOARDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3BOARD_MODELTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffkiss_indicate_mcuTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_MCUTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MCU_VARIANTTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72inline Tffa657bool Td2a8ffisSplitPacketTb4b4b4(Tffa657uint8_t Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(Te6edf3header Tff7b72& Te6edf3FLAG_SPLITTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72inline Tffa657uint8_t Td2a8ffpacketSequenceTb4b4b4(Tffa657uint8_t Te6edf3headerTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3header Tff7b72>Tff7b72> T79c0ff4Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffset_implicit_lengthTb4b4b4(Tffa657uint8_t Te6edf3lenTb4b4b4) Tb4b4b4{
Te6edf3implicit_l Tff7b72= Te6edf3lenTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3implicit_l Tff7b72!Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3implicit Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3implicit Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffsetTXPowerTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4, Tffa657int Te6edf3txpTb4b4b4) Tb4b4b4{
T8b949e// Todo, revamp this function. The current parameters for setTxPower are
T8b949e// suboptimal, as some chips have power amplifiers which means that the max
T8b949e// dBm is not always the same.
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_12Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3interfacesTb4b4b4[Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4] Tff7b72=Tff7b72= Te6edf3SX1280Tb4b4b4) Tb4b4b4{
Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_13Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3interfacesTb4b4b4[Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4] Tff7b72=Tff7b72= Te6edf3SX1280Tb4b4b4) Tb4b4b4{
Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_21Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3interfacesTb4b4b4[Te6edf3radioTff7b72-Tff7b72>Te6edf3getIndexTb4b4b4(Tb4b4b4)Tb4b4b4] Tff7b72=Tff7b72= Te6edf3SX1280Tb4b4b4) Tb4b4b4{
Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_16Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_17Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A1Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A2Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A3Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A4Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A5Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A6Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A7Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A8Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A9Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_AATb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_ACTb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B3Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B4Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B8Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B9Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BATb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BBTb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C4Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C9Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C5Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C6Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C7Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_CATb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D4Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D9Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DBTb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DCTb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DDTb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DETb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E4Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E9Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E3Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E8Tb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_PA_BOOST_PINTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FFTb4b4b4) Te6edf3radioTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3txpTb4b4b4, Te6edf3PA_OUTPUT_RFO_PINTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657uint8_t Td2a8ffgetRandomTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getRadioOnlineTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3radioTff7b72-Tff7b72>Te6edf3randomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return T79c0ff0x00Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657uint16_t Td2a8ffgetQueueSizeTb4b4b4(Tffa657uint8_t Te6edf3indexTb4b4b4) Tb4b4b4{
Tff7b72switch Tb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4{
Tff7b72case T79c0ff0Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_0_SIZETb4b4b4;
Tff7b72#Tff7b72if INTERFACE_COUNT > 1
Tff7b72case T79c0ff1Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_1_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 2
Tff7b72case T79c0ff2Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_2_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 3
Tff7b72case T79c0ff3Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_3_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 4
Tff7b72case T79c0ff4Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_4_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 5
Tff7b72case T79c0ff5Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_5_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 6
Tff7b72case T79c0ff6Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_6_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 7
Tff7b72case T79c0ff7Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_7_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 8
Tff7b72case T79c0ff8Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_8_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 9
Tff7b72case T79c0ff9Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_9_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 10
Tff7b72case T79c0ff10Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_10_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if INTERFACE_COUNT > 11
Tff7b72case T79c0ff11Tb4b4b4:
Tff7b72return Te6edf3CONFIG_QUEUE_11_SIZETb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72defaultTff7b72:
Tff7b72return Te6edf3CONFIG_QUEUE_0_SIZETb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffpromisc_enableTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3promisc Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffpromisc_disableTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3promisc Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Tffa657bool Td2a8ffeeprom_beginTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3InternalFSTb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_READTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657uint32_t Te6edf3mapped_addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3mapped_addr Tff7b72< Te6edf3EEPROM_SIZETb4b4b4; Te6edf3mapped_addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{ Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4; Te6edf3fileTb4b4b4.Te6edf3writeTb4b4b4(T79c0ff0xFFTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4;
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657uint8_t Td2a8ffeeprom_readTb4b4b4(Tffa657uint32_t Te6edf3mapped_addrTb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3byteTb4b4b4;
Tffa657voidTff7b72* Te6edf3byte_ptr Tff7b72= Tff7b72&Te6edf3byteTb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3byte_ptrTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3byteTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

Tffa657bool Td2a8ffeeprom_info_lockedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3lock_byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3lock_byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3lock_byte Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffeeprom_dump_infoTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= Te6edf3ADDR_PRODUCTTb4b4b4; Te6edf3addr Tff7b72<Tff7b72= Te6edf3ADDR_INFO_LOCKTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffeeprom_dump_configTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= Te6edf3ADDR_CONF_SFTb4b4b4; Te6edf3addr Tff7b72<Tff7b72= Te6edf3ADDR_CONF_OKTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffeeprom_dump_allTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffkiss_dump_eepromTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_ROM_READTb4b4b4)Tb4b4b4;
Te6edf3eeprom_dump_allTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Tffa657void Td2a8ffeeprom_flushTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3openTb4b4b4(Te6edf3EEPROM_FILETb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4;
Te6edf3written_bytes Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

Tffa657void Td2a8ffeeprom_updateTb4b4b4(Tffa657int Te6edf3mapped_addrTb4b4b4, Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if MCU_VARIANT == MCU_ESP32
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3mapped_addrTb4b4b4) Tff7b72!Tff7b72= Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3EEPROMTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3mapped_addrTb4b4b4, Te6edf3byteTb4b4b4)Tb4b4b4;
Te6edf3EEPROMTb4b4b4.Te6edf3commitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72elif !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
T8b949e// todo: clean up this implementation, writing one byte and syncing
T8b949e// each time is really slow
Tffa657uint8_t Te6edf3read_byteTb4b4b4;
Tffa657voidTff7b72* Te6edf3read_byte_ptr Tff7b72= Tff7b72&Te6edf3read_byteTb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3read_byte_ptrTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3seekTb4b4b4(Te6edf3mapped_addrTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3read_byte Tff7b72!Tff7b72= Te6edf3byteTb4b4b4) Tb4b4b4{
Te6edf3fileTb4b4b4.Te6edf3writeTb4b4b4(Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3written_bytesTff7b72+Tff7b72+Tb4b4b4;
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Td2a8ffeeprom_writeTb4b4b4(Tffa657uint8_t Te6edf3addrTb4b4b4, Tffa657uint8_t Te6edf3byteTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3eeprom_info_lockedTb4b4b4(Tb4b4b4) Tff7b72&Tff7b72& Te6edf3addr Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4, Te6edf3byteTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3kiss_indicate_errorTb4b4b4(Te6edf3ERROR_EEPROM_LOCKEDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffeeprom_eraseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
Te6edf3InternalFSTb4b4b4.Te6edf3formatTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Tff7b72for Tb4b4b4(Tffa657int Te6edf3addr Tff7b72= T79c0ff0Tb4b4b4; Te6edf3addr Tff7b72< Te6edf3EEPROM_RESERVEDTb4b4b4; Te6edf3addrTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3addrTb4b4b4)Tb4b4b4, T79c0ff0xFFTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Te6edf3hard_resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657bool Td2a8ffeeprom_lock_setTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_INFO_LOCKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3INFO_LOCK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657bool Te6edf3eeprom_product_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3rval Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_PRODUCTTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3rval Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_PRODUCTTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if PLATFORM == PLATFORM_ESP32
Tff7b72if Tb4b4b4(Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_RNODE Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3BOARD_RNODE_NG_20 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3BOARD_RNODE_NG_21 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HMBRW Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TBEAM Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_T32_10 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_T32_20 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_T32_21 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_H32_V2 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_H32_V3 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TDECK_V1 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TBEAM_S_V1 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_H_W_PAPER Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_XIAO_S3Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif PLATFORM == PLATFORM_NRF52
Tff7b72if Tb4b4b4(Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_RAK4631 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HELTEC_T114 Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_OPENCOM_XL Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_TECHO Tff7b72|Tff7b72| Te6edf3rval Tff7b72=Tff7b72= Te6edf3PRODUCT_HMBRWTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Tffa657falseTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657bool Te6edf3eeprom_model_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Te6edf3model Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_MODELTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3model Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_MODELTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72if BOARD_MODEL == BOARD_RNODE
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A9 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_20
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A3 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RNODE_NG_21
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A2 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A7Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_T3S3
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A1 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A6 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_A5 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_AA Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_ACTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HMBRW
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E9 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E3 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_E8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TDECK
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_D9Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TECHO
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_16 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_17Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_TBEAM_S_V1
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DB Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DCTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_XIAO_S3
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DD Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_DETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V1_0
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BA Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_BBTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_0
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B3 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_LORA32_V2_1
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_B9Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V2
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C4 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C9Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC32_V3
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C5 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_CATb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_H_W_PAPER
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C8Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HELTEC_T114
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C6 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_C7Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_RAK4631
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_11 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_12 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_13 Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_14Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_OPENCOM_XL
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_21Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HUZZAH32
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FFTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_E22_ESP32
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_HMBRW
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif BOARD_MODEL == BOARD_GENERIC_ESP32
Tff7b72if Tb4b4b4(Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FF Tff7b72|Tff7b72| Te6edf3model Tff7b72=Tff7b72= Te6edf3MODEL_FETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72else
Tff7b72if Tb4b4b4(Tffa657falseTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657bool Te6edf3eeprom_hwrev_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Te6edf3hwrev Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_HW_REVTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Te6edf3hwrev Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_HW_REVTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3hwrev Tff7b72!Tff7b72= T79c0ff0x00 Tff7b72&Tff7b72& Te6edf3hwrev Tff7b72!Tff7b72= T79c0ff0xFFTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657bool Te6edf3eeprom_checksum_validTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657char Tff7b72*Te6edf3data Tff7b72= Tb4b4b4(Tffa657charTff7b72*Tb4b4b4)Te6edf3mallocTb4b4b4(Te6edf3CHECKSUMMED_SIZETb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3CHECKSUMMED_SIZETb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657char Te6edf3byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657char Te6edf3byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3dataTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3byteTb4b4b4;
Tb4b4b4}
Tffa657unsigned Tffa657char Tff7b72*Te6edf3hash Tff7b72= Te6edf3MD5Tff7b72:Tff7b72:Te6edf3make_hashTb4b4b4(Te6edf3dataTb4b4b4, Te6edf3CHECKSUMMED_SIZETb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3checksum_valid Tff7b72= Tffa657trueTb4b4b4;
Tff7b72for Tb4b4b4(Tffa657uint8_t Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff16Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3stored_chk_byte Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CHKSUMTff7b72+Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3stored_chk_byte Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CHKSUMTff7b72+Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tffa657uint8_t Te6edf3calced_chk_byte Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3hashTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3stored_chk_byte Tff7b72!Tff7b72= Te6edf3calced_chk_byteTb4b4b4) Tb4b4b4{
Te6edf3checksum_valid Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Te6edf3freeTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3freeTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3checksum_validTb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3bt_conf_saveTb4b4b4(Tffa657bool Te6edf3is_enabledTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3is_enabledTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BTTb4b4b4)Tb4b4b4, Te6edf3BT_ENABLE_BYTETb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
T8b949e// have to do a flush because we're only writing 1 byte and it syncs after 8
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BTTb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if !HAS_EEPROM && MCU_VARIANT == MCU_NRF52
T8b949e// have to do a flush because we're only writing 1 byte and it syncs after 8
Te6edf3eeprom_flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}
Tb4b4b4}

Tffa657void Te6edf3di_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3dintTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DINTTb4b4b4)Tb4b4b4, Te6edf3dintTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3da_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3dadrTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DADRTb4b4b4)Tb4b4b4, Te6edf3dadrTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3db_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72=Tff7b72= T79c0ff0x00Tb4b4b4) Tb4b4b4{
Te6edf3display_blanking_enabled Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3display_blanking_enabled Tff7b72= Tffa657trueTb4b4b4;
Te6edf3display_blanking_timeout Tff7b72= Te6edf3valTff7b72*T79c0ff1000Tb4b4b4;
Tb4b4b4}
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BSETTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DBLKTb4b4b4)Tb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Te6edf3drot_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_DISPLAY
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72>Tff7b72= T79c0ff0x00 Te6edf3and Te6edf3val Tff7b72<Tff7b72= T79c0ff0x03Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DROTTb4b4b4)Tb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4;
Te6edf3hard_resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Te6edf3dia_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72> T79c0ff0x00Tb4b4b4) Tb4b4b4{ Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DIATb4b4b4)Tb4b4b4, T79c0ff0x01Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72else Tb4b4b4{ Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_DIATb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3hard_resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3np_int_conf_saveTb4b4b4(Tffa657uint8_t Te6edf3p_intTb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PSETTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_PINTTb4b4b4)Tb4b4b4, Te6edf3p_intTb4b4b4)Tb4b4b4;
Tb4b4b4}


Tffa657bool Te6edf3eeprom_have_confTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tff7b72if Tb4b4b4(Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tff7b72if Tb4b4b4(Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4) Tff7b72=Tff7b72= Te6edf3CONF_OK_BYTETb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72endif
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Te6edf3eeprom_conf_loadTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3eeprom_have_confTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3radioTff7b72-Tff7b72>Te6edf3getRadioOnlineTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_EEPROM
Tffa657uint8_t Te6edf3sf Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3cr Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3txp Tff7b72= Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3freq Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3bw Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3EEPROMTb4b4b4.Te6edf3readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif MCU_VARIANT == MCU_NRF52
Tffa657uint8_t Te6edf3sf Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3cr Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint8_t Te6edf3txp Tff7b72= Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3freq Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3bw Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4) Tff7b72<Tff7b72< T79c0ff24 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4) Tff7b72<Tff7b72< T79c0ff16 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4) Tff7b72<Tff7b72< T79c0ff8 Tff7b72| Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3eeprom_readTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3radioTff7b72-Tff7b72>Te6edf3setSpreadingFactorTb4b4b4(Te6edf3sfTb4b4b4)Tb4b4b4;
Te6edf3radioTff7b72-Tff7b72>Te6edf3setCodingRate4Tb4b4b4(Te6edf3crTb4b4b4)Tb4b4b4;
Te6edf3setTXPowerTb4b4b4(Te6edf3radioTb4b4b4, Te6edf3txpTb4b4b4)Tb4b4b4;
Te6edf3radioTff7b72-Tff7b72>Te6edf3setFrequencyTb4b4b4(Te6edf3freqTb4b4b4)Tb4b4b4;
Te6edf3radioTff7b72-Tff7b72>Te6edf3setSignalBandwidthTb4b4b4(Te6edf3bwTb4b4b4)Tb4b4b4;
Te6edf3radioTff7b72-Tff7b72>Te6edf3updateBitrateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tffa657void Te6edf3eeprom_conf_saveTb4b4b4(Te6edf3RadioInterfaceTff7b72* Te6edf3radioTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hw_ready Tff7b72&Tff7b72& Te6edf3radioTff7b72-Tff7b72>Te6edf3getRadioOnlineTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_SFTb4b4b4)Tb4b4b4, Te6edf3radioTff7b72-Tff7b72>Te6edf3getSpreadingFactorTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_CRTb4b4b4)Tb4b4b4, Te6edf3radioTff7b72-Tff7b72>Te6edf3getCodingRate4Tb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_TXPTb4b4b4)Tb4b4b4, Te6edf3radioTff7b72-Tff7b72>Te6edf3getTxPowerTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;

Tffa657uint32_t Te6edf3bw Tff7b72= Te6edf3radioTff7b72-Tff7b72>Te6edf3getSignalBandwidthTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4, Te6edf3bwTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4, Te6edf3bwTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4, Te6edf3bwTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_BWTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4, Te6edf3bwTb4b4b4)Tb4b4b4;

Tffa657uint32_t Te6edf3freq Tff7b72= Te6edf3radioTff7b72-Tff7b72>Te6edf3getFrequencyTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x00Tb4b4b4, Te6edf3freqTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x01Tb4b4b4, Te6edf3freqTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x02Tb4b4b4, Te6edf3freqTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_FREQTb4b4b4)Tff7b72+T79c0ff0x03Tb4b4b4, Te6edf3freqTb4b4b4)Tb4b4b4;

Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4, Te6edf3CONF_OK_BYTETb4b4b4)Tb4b4b4;
Te6edf3led_indicate_infoTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3led_indicate_warningTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Te6edf3eeprom_conf_deleteTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3eeprom_updateTb4b4b4(Te6edf3eeprom_addrTb4b4b4(Te6edf3ADDR_CONF_OKTb4b4b4)Tb4b4b4, T79c0ff0x00Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3unlock_romTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3led_indicate_errorTb4b4b4(T79c0ff50Tb4b4b4)Tb4b4b4;
Te6edf3eeprom_eraseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3kiss_indicate_locationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if HAS_GPS
Tffa657char Te6edf3locationTb4b4b4[T79c0ff10Tb4b4b4]Tb4b4b4;
Tffa657int Te6edf3lenTb4b4b4;
Tffa657int32_t Te6edf3valTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3gpsTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3isValidTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_GPSTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3GPS_CMD_LATTb4b4b4)Tb4b4b4;
Te6edf3val Tff7b72= Te6edf3gpsTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3latTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff1000000Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;

Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3CMD_GPSTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3GPS_CMD_LNGTb4b4b4)Tb4b4b4;
Te6edf3val Tff7b72= Te6edf3gpsTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3lngTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff1000000Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTff7b72>Tff7b72>T79c0ff24Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTff7b72>Tff7b72>T79c0ff16Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTff7b72>Tff7b72>T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}

Tffa657void Te6edf3log_debugTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3msgTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3LOG_MSGTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MSG_DBGTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3strlenTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3msgTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Te6edf3log_debugTb4b4b4(Tffa657charTff7b72* Te6edf3msgTb4b4b4) Tb4b4b4{
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3LOG_MSGTb4b4b4)Tb4b4b4;
Te6edf3serial_writeTb4b4b4(Te6edf3MSG_DBGTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3strlenTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3escaped_serial_writeTb4b4b4(Te6edf3msgTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3serial_writeTb4b4b4(Te6edf3FENDTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72include T8b949e"src/misc/FIFOBuffer.h"


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────